High level languages such as object oriented programming languages allow developers to rapidly build and test code. An Applications Programming Interface is a common component of object oriented programming languages which allows developers to build software for a particular application through a reference program library. The reference program library can be linked to hardware for performing specific tasks or functions. In C and other procedural programming languages, the programming is action oriented. For example, C programs are written as functions. An object oriented programming language such as C++ provides abstraction and provides for the creation of classes. Key components of object oriented programming are inheritance, polymorphism, and abstraction. These features provide code reusability, reduced code complexity, easier interpretation, and better visualization. Object oriented programming provides for data variables, or members, that can be contained in classes. C++ for example, contains a set of foundation classes for providing access to programming methods and functions. Java is another object oriented programming languages that focuses on classes and methods for programming. The classes can be used to instantiate other classes that can in turn employ the functionality and behavior of the inherited class methods and variables.
Developers can build new classes or extend existing classes to add new features or functionality. Many class libraries exist which provides for well-defined, carefully tested, well documented, and portable components. The kind of flexibility afforded by the use of standard class libraries speeds up development and testing. Class libraries can be packaged and provided as a single distribution. Applications Programming Interfaces (API) are library modules for enhancing capabilities or extending functionality. An API can open up resources that may be unavailable to a developer or may require a developer to write underlying device drivers. Device drivers convert information in one format on one hardware into a format that is interpretable on another platform. Device drivers are common software for hardware devices such as cameras, printers, copiers, DVD drives, and multimedia components that interface to a computer system. Device drivers may be proprietary solutions that provide operational utility through an API. The API opens up communication to the device, thereby providing developers access to the underlying resources offered by the device. An API provides a developer a common access point through a programming language to communicate with the underlying platform or to provide access to proprietary features.
An input device such as a mouse, a stick, a touchpad, a tablet may have API's that allow developers to tap access the functionality provided by the input device. An input device can convert physical movement to coordinate information. For example, a mouse converts physical movement of a mouse to a coordinate. A touchpad converts physical touch to a coordinate. A stick is similar to a joystick which converts physical movement to a coordinate. A tablet converts a physical action such as the depressing of a stylus on a tablet to a coordinate. These input devices operate on some form of physical input. Each input device may provide various information that is specific to the device. An API can precipitate access to the various information in the form of parameters, variables, or methods that can be utilized by a developer. For example, a touchpad may provide an API providing information as to the touching of the touchpad, or the stiction associated with the touchpad. Each input device may have its own API particularly suited for opening up access to underlying methods, classes, variables, or functions of the input device hardware.
An API is not generally available to proprietary input devices or hardware that interfaces to only one component or system. An API can be developed when a hardware manufacturer or supplier, for example, desires to open up access to the hardware, thereby allowing outside companies or manufacturers to employ their proprietary device in their product offering. The API provides access to the underlying functionality without revealing the internal proprietary details of operation.